#ifndef CARDS_H
#define CARDS_H
#include "card.h"
#include <QSet>
class Cards
{
public:
    enum SortType
    {
        Asc,
        Desc,
        NoSort
    };

    Cards();
    Cards(const Card& card);
    //添加单张扑克牌
    void Add(const Card& card);
    //添加多张扑克牌
    void Add(const Cards& cards);

    //一次插入多张牌
    Cards& operator << (const Card& card);
    Cards &operator << (const Cards& cards);

    //删除多张扑克牌
    void remove(const Card& card);
    void remove(const Cards& cards);

    //当前扑克牌的数量
    std::size_t Card_Count()const;
    bool Is_Empty()const;
    void Clear();

    //最大点数
    Card::CardPoint Max_Point()const;
    //最小点数
    Card::CardPoint Min_Point()const;
    //指定点数的牌的数量
    std::size_t Point_Count(Card::CardPoint point)const;
    //某张牌是否在集合中
    bool Contains(const Card& card);
    bool Contains(const Cards& cards);

    //随机取出一张扑克牌
    Card Take_RandCard();

    //牌按升序/降序排列
    CardList To_CardList(SortType type = Desc);



private:
    QSet<Card> cards_;
};

#endif // CARDS_H
